package com.cloudcc.boot.entity.sap;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yangzg.cloudcc.openapi.jackson.JsonBigDecimalFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;

@Data
public class SapOrderVo {

    @JsonProperty("HEADER")
    private HeaderVo HEADER;

    @JsonProperty("ITEMS")
    private List<ItemVo> ITEMS;

    @Data
    public static class HeaderVo {

        @JsonProperty("VBELN")
        private String VBELN;//CRM订单编号

        @JsonProperty("AUART")
        private String AUART;//SAP销售订单类型-订单类型代码

        @JsonProperty("VKORG")
        private String VKORG;//销售组织-销售组织代码

        @JsonProperty("VTWEG")
        private String VTWEG;//分销渠道-分销渠道代码

        @JsonProperty("SPART")
        private String SPART;//产品组-产品组代码

        @JsonProperty("KUNAG")
        private String KUNAG;//售达方-客户代码

        @JsonProperty("KUNNR")
        private String KUNNR;//运达方-客户代码

        @JsonProperty("BSTNK")
        private String BSTNK;//CRM销售合同编号

        @JsonFormat(pattern = "yyyyMMdd")
        @JsonProperty("BSTDK")
        private Date BSTDK;//CRM销售合同签订日期-YYYYMMDD

        @JsonProperty("ZTERM")
        private String ZTERM;//付款条件-付款条件代码

        @JsonFormat(pattern = "yyyyMMdd")
        @JsonProperty("PRSDT")
        private Date PRSDT;//签约日期/定价日期和汇率-YYYYMMDD

        @JsonProperty("ZZPRZ23")
        @JsonBigDecimalFormat(pattern = "0.000", roundingMode = RoundingMode.DOWN)
        private BigDecimal ZZPRZ23;//调整收款比率-收货款-格式=NN.NNN

        @JsonProperty("ZZPRZ2301")
        @JsonBigDecimalFormat(pattern = "0.000", roundingMode = RoundingMode.DOWN)
        private BigDecimal ZZPRZ2301;//调整收款比率-验收款-格式=NN.NNN

        @JsonProperty("ZZPRZ2302")
        @JsonBigDecimalFormat(pattern = "0.000", roundingMode = RoundingMode.DOWN)
        private BigDecimal ZZPRZ2302;//调整收款比率-质保金-格式=NN.NNN

        @JsonProperty("WAERK")
        private String WAERK;//货币-货币代码

    }

    @Data
    public static class ItemVo {

        @JsonProperty("POSNR")
        private String POSNR;//CRM行项目编号

        @JsonProperty("MATNR")
        private String MATNR;//物料-物料编码

        @JsonProperty("KWMENG")
        @JsonBigDecimalFormat(pattern = "0.000", roundingMode = RoundingMode.DOWN)
        private BigDecimal KWMENG;//订单数量

        @JsonProperty("VRKME")
        private String VRKME;//计量单位

        @JsonProperty("NETPR")
        @JsonBigDecimalFormat(pattern = "0.00", roundingMode = RoundingMode.DOWN)
        private BigDecimal NETPR;//订单行（含税）总金额

        @JsonProperty("WBS")
        private String WBS;//WBS元素-WBS元素代码

    }

}
